home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (C) 1997, 1999 Aladdin Enterprises. All rights reserved.
-
- This file is part of AFPL Ghostscript.
-
- AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author or
- distributor accepts any responsibility for the consequences of using it, or
- for whether it serves any particular purpose or works at all, unless he or
- she says so in writing. Refer to the Aladdin Free Public License (the
- "License") for full details.
-
- Every copy of AFPL Ghostscript must include a copy of the License, normally
- in a plain ASCII text file named PUBLIC. The License grants you the right
- to copy, modify and redistribute AFPL Ghostscript, but only under certain
- conditions described in the License. Among other things, the License
- requires that the copyright notice and this notice be preserved on all
- copies.
- */
-
- /*$Id: gxsample.h,v 1.2 2000/09/19 19:00:40 lpd Exp $ */
- /* Sample lookup and expansion */
-
- #ifndef gxsample_INCLUDED
- # define gxsample_INCLUDED
-
- /*
- * The following union implements the expansion of sample
- * values from N bits to 8, and a possible linear transformation.
- */
- typedef union sample_lookup_s {
- bits32 lookup4x1to32[16]; /* 1 bit/sample, not spreading */
- bits16 lookup2x2to16[16]; /* 2 bits/sample, not spreading */
- byte lookup8[256]; /* 1 bit/sample, spreading [2] */
- /* 2 bits/sample, spreading [4] */
- /* 4 bits/sample [16] */
- /* 8 bits/sample [256] */
- } sample_lookup_t;
-
- /*
- * Define identity and inverted expansion lookups for 1-bit input values.
- * These can be cast to a const sample_lookup_t.
- */
- extern const bits32 lookup4x1to32_identity[16];
- extern const bits32 lookup4x1to32_inverted[16];
-
- /*
- * Define procedures to unpack and shuffle image data samples. The Unix C
- * compiler can't handle typedefs for procedure (as opposed to
- * pointer-to-procedure) types, so we have to do it with macros instead.
- *
- * The original data start at sample data_x relative to data.
- * bptr points to the buffer normally used to deliver the unpacked data.
- * The unpacked data are at sample *pdata_x relative to the return value.
- *
- * Note that this procedure may return either a pointer to the buffer, or
- * a pointer to the original data.
- */
- #define SAMPLE_UNPACK_PROC(proc)\
- const byte *proc(P7(byte *bptr, int *pdata_x, const byte *data, int data_x,\
- uint dsize, const sample_lookup_t *ptab, int spread))
- typedef SAMPLE_UNPACK_PROC((*sample_unpack_proc_t));
-
- /*
- * Declare the 1-for-1 unpacking procedure.
- */
- SAMPLE_UNPACK_PROC(sample_unpack_copy);
- /*
- * Declare unpacking procedures for 1, 2, 4, and 8 bits per pixel,
- * with optional spreading of the result.
- */
- SAMPLE_UNPACK_PROC(sample_unpack_1);
- SAMPLE_UNPACK_PROC(sample_unpack_2);
- SAMPLE_UNPACK_PROC(sample_unpack_4);
- SAMPLE_UNPACK_PROC(sample_unpack_8);
-
- #endif /* gxsample_INCLUDED */
-